package cn.dengta.webapp.trade.model;

import cn.dengta.common.model.ValueProxy;
import cn.dengta.context.model.LabelI18nProxy;
import lombok.Getter;

import static cn.dengta.context.model.TradeEnumI18nKey.*;

/**
 * 提现状态
 */
@Getter
public enum CashStatus implements LabelI18nProxy<CashStatus, Integer> {

	/** 第三方提现处理失败 */
	FAILED(-99, CASH_STATUS_FAILED),
	/** 第三方退款 */
	BACK(-10, "第三方退款"),
	/** 用户手动取消（只有待初审、待初审期间可以取消） */
	CANCELED(-9, CASH_STATUS_CANCELED),
	REVIEW_FALSE(-2, CASH_STATUS_REVIEW_FALSE),
	VERIFY_FALSE(-1, CASH_STATUS_VERIFY_FALSE),
	/** 待初审（刚刚提交申请） */
	INIT(0, CASH_STATUS_INIT),
	/** 初审通过（待复审） */
	VERIFY_TRUE(1, CASH_STATUS_VERIFY_TRUE),
	/** 复审通过（待第三方处理） */
	REVIEW_TRUE(2, CASH_STATUS_REVIEW_TRUE),
	/** 已提交到第三方 */
	SUBMIT(3, "已提交到第三方"),
	/** 第三方处理中 */
	PENDING(9, CASH_STATUS_PENDING),
	/** 提现成功 */
	OK(99, CASH_STATUS_OK);

	public final Integer value;
	final ValueProxy<CashStatus, Integer> proxy;

	CashStatus(Integer value, String label) {
		this.value = value;
		this.proxy = new ValueProxy<>(this, value, label);
	}

	public static CashStatus[] getValues() {
		return ValueProxy.getCachedArray(CashStatus.class, CashStatus::values);
	}

	public static CashStatus of(Integer value) {
		return INIT.getValueOf(value);
	}

}
